﻿using Microsoft.EntityFrameworkCore;
using TuLing.Blazor.Dto;
using TulingMember.Core;

namespace TuLing.Blazor.Services
{
    public class SaleOrderReturnService : BaseService
    {
        public SaleOrderReturnService(DefaultDbContext context): base(context) { }

        public List<SaleOrderReturn> Search(BaseInput input)
        {
            if (!string.IsNullOrEmpty(input.keyword))
            {
                return _context.SaleOrderReturns.ToList();
            }
            return _context.SaleOrderReturns.ToList();
        }

        public SaleOrderReturn? Get(long id)
        {
            return _context.SaleOrderReturns.Include(b => b.Details).FirstOrDefault(s => s.Id == id);
        }
        
        public void LoadData(SaleOrderReturn buy)
        {
            _context.Entry(buy).Reference(b => b.Customer).Load();
            _context.Entry(buy).Collection(b => b.Details).Load();
        }

        public SaleOrderReturn? Save(SaleOrderReturn input)
        {
            if (input.Id == 0)
            {
                _context.SaleOrderReturns.Add(input);
            }
            _context.SaveChanges();
            _context.Entry(input).Reference(e => e.Customer).Load();
            return input;
        }

        public void Delete(long id)
        {
            var order = _context.BuyOrderReturns.FirstOrDefault(m => m.Id == id);
            if (order == null)
            {
                throw new Exception("单据不存在");
            }
            _context.BuyOrderReturns.Remove(order);
            _context.SaveChanges();
        }
    }
}
